//
//  DateUtil.h
//  EliveClient
//
//  Created by Pierce on 2017/8/9.
//  Copyright © 2017年 Pierce. All rights reserved.
//

#import <Foundation/Foundation.h>

/**
 默认时间格式，可依据项目时间格式修改
 
 @return 默认时间格式
 */
#define FORMAT_DEFULT  @"YYYY-MM-dd HH:MM:SS";

//自定义custom格式
#define FORMAT_CUSTOM  @"yyyy/MM/dd";


typedef NS_ENUM (NSInteger, DateFormatterStyle){
    DateStyleDefault_DEFULT = 0, // 宏定义的FORMAT_DEFULT
    DateStyleDefault_CUSTOM = 1, // 宏定义的FORMAT_DEFULT
    DateStyleDefault_YMD = 2, // 宏定义的FORMAT_DEFULT
    DateStyleDefault_YMDHMS = 3, // 宏定义的FORMAT_DEFULT
    DateStyleDoublePoint = 4, //YYYY:MM:SS
    DateStyleInclined = 5, //YYYY/MM/SS
    DateStyleDefault_HMS = 6,
    DateStyleDefault_MS = 7,
     DateStyleDefault_HM = 8
};


@interface DateUtil : NSObject


#pragma mark -  -获取NSString格式date

/**
 获取String格式的当前时间
 
 @param formatStyle 时间格式
 @return 当前时间字符串
 */
+(NSString *)getNowDateByFormatStyle:(DateFormatterStyle)formatStyle;

/**
 获取String格式的对应时间
 @param date 当前时间
 @param formatStyle 时间格式
 @return 时间字符串
 */
+(NSString *)stringFromDate:(NSDate *)date Format:(DateFormatterStyle)formatStyle;
/**
 获取时间字符串
 
 @param value 时间间隔秒数
 @param formatStyle 时间格式
 @return 时间字符串
 */
+ (NSString *)dateStringWithLong:(long)value Format:(DateFormatterStyle)formatStyle;

#pragma mark -  -获取Date格式date

/**
 获取当前Date格式时间
 
 @return 当前时间
 */
+(NSDate *)getNowDate;

/**
 获取对应Date格式时间
 
 @param dateString 时间字符串
 @param formatStyle 时间格式
 @return 时间
 */
+(NSDate *)dateFromString:(NSString *)dateString Format:(DateFormatterStyle)formatStyle;

#pragma mark -  -获取星期几

/**
 获取当前日期为星期几
 
 @return 星期几
 */
+ (NSString *)getNowWeekday;

/**
 获取对应日期为星期几
 
 @param date 对应日期
 @return 星期几
 */
+ (NSString *)getNowWeekdayByDate:(NSDate *)date;

//获取所在日期前后时间段
+ (NSMutableArray *)getCurrentWeeksWithFirstDiff:(NSInteger)first lastDiff:(NSInteger)last;

//得到指定日期所在周的第一天
+ (NSDate*)getFirstDateOfWeek:(NSDate*)date;

//得到日历对象
+ (NSCalendar*)getCalendar;

/**
 *    得到指定日期是本周的第几天 周日返回1 周一返回2
 */
+ (NSInteger)getNowDateIndexDayInWeek:(NSDate *)date;

/**
 *    时间戳转为时间 想要格式
 */
+ (NSString *)getDateWithTimeInterval:(NSString *)TimeIntervalStr type:(NSString *)formatterType;

// 返回时间戳
+ (NSString *)getNowDateWithTime;
// 返回时间戳（精确）
+ (NSString *)getNowDateWithExactTime;
//计算时间差
+ (NSTimeInterval)pleaseInsertStarTime:(NSString *)starTime andInsertEndTime:(NSString *)endTime format:(NSString *)format;
//将某个时间转化成 时间戳
+(NSInteger)timeSwitchTimestamp:(NSString *)formatTime andFormatter:(NSString *)format;
//获取今天0点的时间
+(NSDate*)getTodayDate;
@end
